	// 用于发送ajax
    function ajax(opts){
        let xhr;
        if(window.XMLHttpRequest){
             xhr = new XMLHttpRequest();
        }else{
             xhr = new ActiveXObject();
        }
        
        // es5的写法
        // let method = opts.method;
        // let url = opts.url;
        // let async = opts.async;
        // ES6写法 
        // 解构对象里的参数 且 给默认值 ；
        let {method="get",url="",async=true,data={},success=function(){},dataType="text"} = opts;
        
        // 判断如果是一个get请求 那么内部就需要把data里的参数拼接到url上 
        if(method.toLocaleLowerCase()=="get"){
            // url?name=zhangsan&age=20
            // 把对象 {name:"zhangsan",age:20}  转成  name=zhangsan&age=20字符串
            url = url + "?" + o2s(data);
        }
        
        // method:get  ,url:"请求地址",async:true
        xhr.open(method,url,async);
        
        // 判断如果是post请求 需要带上请求头部 
        if(method.toLocaleLowerCase()=="post"){
            xhr.setRequestHeader("Content-Type","application/x-www-form-urlencoded")
        }
        
        
        
        xhr.onload = function(){
            // ajax 获取成功之后的位置 ,这个地方是异步的； 
            // 如果ajax 发送或者请求成功就调用外部的success函数
            if(dataType=="json"){
                success( JSON.parse( xhr.responseText));
            }else{
                success(xhr.responseText);
            }
            
            
        }
        
        if(method.toLocaleLowerCase()=="get"){
                xhr.send();
        }else{
            // 如果是post请求 那么需要发送post的数据
            // name=zhangsan&age=21
            xhr.send(o2s(data));
        }
    
        
        
        // 是ajax函数的子函数
        // 定义函数 可以把对象转换成字符串；
        function o2s(obj){
            let arr = [];
            for(let key in obj){
                // console.log(obj[key]);
                let str = key + "=" + obj[key];
                // console.log(str);
                arr.push(str);
            }
            let purl = arr.join("&");
            return purl;
        }
        
    }